package tongwentongshu.com.app.utils;

import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.provider.MediaStore;

import java.io.File;

/**
 * @author xujun  on 2016/11/28.
 * @email gdutxiaoxu@163.com
 */

public class IntentUtils {

    /**
     * 从相册获取图片
     **/
    public static Intent doPickPhotoFromGallery(int width, int height) {
        Intent intent = new Intent();
        intent.setType("image/*");  // 开启Pictures画面Type设定为image
        intent.setAction(Intent.ACTION_GET_CONTENT); //使用Intent.ACTION_GET_CONTENT这个Action
        //实现对图片的裁剪，必须要设置图片的属性和大小
        intent.setType("image/*");  //获取任意图片类型
        intent.putExtra("crop", "true");  //滑动选中图片区域
        intent.putExtra("aspectX", 1);  //裁剪框比例1:1
        intent.putExtra("aspectY", 1);
        intent.putExtra("outputX", width);  //输出图片大小
        intent.putExtra("outputY", height);
        intent.putExtra("return-data", true);  //有返回值
        return intent;
    }

    /**
     * 从相册获取图片
     **/
    public static Intent startGallery() {
        Intent intent = new Intent();
        intent.setType("image/*");  // 开启Pictures画面Type设定为image
        intent.setAction(Intent.ACTION_GET_CONTENT); //使用Intent.ACTION_GET_CONTENT这个Action
        return intent;
    }

    /**
     * 裁剪图片
     *
     * @param imageUri
     * @return
     */
    public static Intent cropPic(Uri imageUri) {

        Intent intent = new Intent("com.android.camera.action.CROP");

        intent.putExtra("crop", "true");

        // 设置x,y的比例，截图方框就按照这个比例来截 若设置为0,0，或者不设置 则自由比例截图
        intent.putExtra("aspectX", 2);
        intent.putExtra("aspectY", 1);

        // 裁剪区的宽和高 其实就是裁剪后的显示区域 若裁剪的比例不是显示的比例，
        // 则自动压缩图片填满显示区域。若设置为0,0 就不显示。若不设置，则按原始大小显示
        intent.putExtra("outputX", 200);
        intent.putExtra("outputY", 100);

        // 不知道有啥用。。可能会保存一个比例值 需要相关文档啊
        intent.putExtra("scale", true);

        // true的话直接返回bitmap，可能会很占内存 不建议
        intent.putExtra("return-data", false);
        // 上面设为false的时候将MediaStore.EXTRA_OUTPUT即"output"关联一个Uri
        intent.putExtra("output", imageUri);
        // 看参数即可知道是输出格式
        intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
        // 面部识别 这里用不上
        intent.putExtra("noFaceDetection", false);


        return intent;
    }

    /**
     * 启动相机
     *
     * @param uri
     * @return
     */
    public static Intent startCamera(Uri uri) {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        //加载Uri型的文件路径
        if (uri != null) {
            intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
        }
        return intent;
    }

    /**
     * 启动相机
     *
     * @param file
     * @return
     */
    public static Intent startCamera(File file) {
        Intent intent = startCamera(Uri.fromFile(file));

        return intent;
    }
}
